home *** CD-ROM | disk | FTP | other *** search
-
- Apresentando
-
- O INTERFACE DO VISUALPREFS PARA PROGRAMADORES
-
- Um trabalho em curso
-
-
- Se é um programador, pode aproveitar algumas das características do VisualPrefs.
-
- Embora não exista ainda um API completo para o VisualPrefs já é possível
- utilizar as classes BOOPSI que o VisualPrefs adiciona ao sistema.
-
- O objectivo dessas classes é permitir ao programador obter facilmente um
- "visual" à VisualPrefs sem ter que esperar que eu implemente um 'patch'
- para a sua aplicação. ;-)
-
- Actualmente existe apenas uma classe:
-
- "tbiclass" - a classe da barra de título
-
- Esta classe proporciona na barra de título das suas janelas as imagens
- mais comuns dos botões criados pelas aplicações. Exemplos disto são o botão
- de "iconificar" ou o botão "padlock" do DirOpus5.
-
- Todos os programas que usem esta classe obterão o mesmo aspecto para os botões
- da barra de título se o VisualPrefs estiver a correr, o que provavelmente é
- melhor do que ter diversas versões da mesma imagem...
-
- Pode usar a "tbiclass" como "sysiclass"; são ambas sub-classes da "imageclass".
- Uma imagem para a "tbiclass" pode ser criada chamando NewObject() com as
- seguintes opções:
-
- SYSIA_DrawInfo - Isto é absolutamente obrigatório. TEM que passar um ponteiro
- DrawInfo para a "tbiclass" ou o NewObject() falhará.
-
- SYSIA_Which - Para especificar a imagem que pretende; actualmente existem seis
- tipos de imagem:
-
- POPUPIMAGE - Imagem de botão "pop-up" do MUI da barra de título.
- MUIIMAGE - Imagem de botão "configuração" do MUI da barra de título.
- SNAPSHOTIMAGE - Imagem de botão "instantâneo" do MUI da barra de título.
- ICONIFYIMAGE - Imagem de botão "iconificar" da barra de título.
-
- PADLOCKIMAGE - Imagem do tipo de botão "padlock" do DirOpus.
- TBFRAMEIMAGE - Uma imagem de botão de barra de título vazia para
- efeitos gerais.
-
- IA_Width, IA_Height - Estes só são reconhecidos pelo tipo TBFRAMEIMAGE;
- os restantes tipos de imagem ignoram-nos e têm sempre
- o mesmo tamanho da imagem do botão de profundidade.
-
- SYSIA_ReferenceFont - Este só é reconhecido pelo tipo TBFRAMEIMAGE;
- os restantes tipos de imagem ignoram-no e tem sempre
- a mesma altura da imagem do botão de profundidade.
-
- Claro que se o NewObject() falhar deve providenciar uma imagem pré-definida para
- os botões da sua barra de título. No entanto, planeio editar brevemente em
- disquete uma versão "freeware" de imagens para a "tbiclass" que poderá incluir nas
- suas aplicações. Esta classe providenciará as imagens necessárias que serão
- automaticamente substituídas pelas do VisualPrefs se este estiver presente.
- Por isso, pode manter as suas imagens pré-definidas muito simples. ;-)
-
- É importante tomar nota de que todas as imagens da "tbiclasss" terão um valor
- de -1 no lado esquerdo. Isto não deve ser modificado e deve colocar os seus
- botões da barra de título em concordância. A razão para este (aparentemente
- estranho) comportamento é que as imagens dos botões da barra de título da Intuition
- também funcionam deste modo, devemos tentar manter a compatibilidade com a
- Intuition sempre que for possível.
-
- Assim, ajuste o tamanho dos seus botões, se necessário, para os adaptar ao tamanho
- das imagens devolvido pela classe.
-
- Um exemplo de tudo isto pode ser:
-
- ...
-
- /* Criar a imagem */
-
- if (!(iconifyimage = NewObject(NULL,"tbiclass",SYSIA_Which,ICONIFYIMAGE,
- SYSIA_DrawInfo,dri,
- TAG_END)))
- {
- iconifyimage = builtin_iconifyimage;
- }
-
- /* Utilizar a imagem */
-
- gad->GadgetRender = iconifyimage;
- ...
-
- /* Libertar a imagem */
-
- if (iconifyimage != builtin_iconifyimage) DisposeObject(iconifyimage);
-
- ...
-
- É tudo. Por agora não tenho um verdadeiro ficheiro de exemplo, por isso,
- para utilizar a "tbiclass" nas suas aplicações, por favor cole as poucas
- linhas seguintes no início do seu código.
-
- ---- cortar por aqui ----8<---- cortar por aqui ----8<---- cortar por aqui ----
-
- #define POPUPIMAGE (101)
- #define MUIIMAGE (102)
- #define SNAPSHOTIMAGE (103)
- #define ICONIFYIMAGE (104)
- #define PADLOCKIMAGE (105)
- #define TBFRAMEIMAGE (106)
-
- ---- cortar por aqui ----8<---- cortar por aqui ----8<---- cortar por aqui ----
-
- Existe já uma aplicação a usar a "tbiclass", ViNCEd de Thomas Richter.
-
- Espero que também suporte a "tbiclass" e contribua deste modo para dar uma
- aparência consistente a todos os botões das barras de título usados nas
- aplicações.
-
- Obrigado,
- Massimo Tantignone (tanti@intercom.it)
-